package com.myaihui.service;

import com.myaihui.domain.Resource;
import com.myaihui.domain.Role;
import com.myaihui.domain.SysUser;

import java.util.List;

/**
 * Created by sun on 2018/6/6.
 *
 * @author sunfuchang03@126.com
 * @version 1.0
 * @since 1.0
 */
public interface SysUserService extends BasePageableService<SysUser, String> {

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Constants/Initializer
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */
     
     

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Interfaces
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    SysUser findByUsername(String username);

    SysUser add(String username, String password, Integer type, String platformId, String createdId);

    SysUser modifyPassword(Integer type, String platformId, String password);

    SysUser findByTypeAndPlatformId(Integer type, String platformId);

    SysUser findByUserNameWithRolesAndResources(String username);

    List<Role> findRolesByUserId(String userId);

    List<Resource> findResourcesByUserId(String userId);

    boolean validatePassword(String userId, String pwd);

    void updatePassword(String userId, String pwd);

    SysUser findByUsernameExcludeId(String name, String userId);
}
